﻿using System;
// 当委托对象指向一个实例方法时，委托对象不仅需维护到方法的引用，而且需维护到方法所属类实例的引用。
// System.Delegate类的Target属性表示这个类实例（当委托引用静态方法时为null）。

namespace _083_实例方法和静态方法的Target属性
{
    public delegate void ProgressReporter(int percentComplete);
    class X
    {
        public void InstanceProgress(int percentComplete)
        {
            Console.WriteLine(percentComplete);
        }
    }
    class Text
    {
        static void Main(string[] args)
        {
            X x = new X();
            ProgressReporter p = x.InstanceProgress;
            p(99); // 99
            Console.WriteLine(p.Target == x); // True
            Console.WriteLine(p.Method); // Void InstanceProgress(Int32)

            Console.ReadKey();
        }
    }
}